package basis.ea;

import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.Map;

/**
 * Stellt Hilfsfunktionen fuer den Dateiexport zu Verfuegung
 * 
 * Datei: EAExport.java                   
 * Datum: 04.12.2011   
 *                  
 * @author Alexander Bredo 
 * @version 0.5
 * 
 */
public abstract class EAExport
{
  /**
   * Prueft ob eine Klasse ein primitiver Typ von Java ist.
   * Inklusive String und der Beruecksichtigung von Auto-Boxing!
   */
  protected static boolean istPrimitiverTyp (Class<?> klasse)
  {
    return klasse.equals (Boolean.class)
        || klasse.equals (Integer.class)
        || klasse.equals (Character.class)
        || klasse.equals (Byte.class) 
        || klasse.equals (Short.class)
        || klasse.equals (Double.class) 
        || klasse.equals (Long.class)
        || klasse.equals (Float.class) 
        || klasse.equals (String.class);
  }
  
  
  /**
   * Prueft ob ein Objekt keine Liste und kein primitver Datentyp ist
   */
  protected static boolean istIndividualObjekt (Object objekt)
  {
    if ((objekt instanceof Iterable)     
        || (objekt instanceof Map)          
        || (objekt.getClass ().isArray ())   
        || (istPrimitiverTyp (objekt.getClass ())))
    {
      return false;
    }
    else
    {
      return true;
    }
  }
  
  
  /**
   * Prueft ob ein Objekt eine Liste ist
   */
  protected static boolean istListe (Object objekt)
  {
    if ((objekt instanceof Iterable)     
        || (objekt instanceof Map)          
        || (objekt.getClass ().isArray ()))
    {
      return true;
    }
    else
    {
      return false;
    }
  }
  
  
  /**
   * Schreibt eine gegebene Zeichenkette in eine Datei
   */
  protected static void zeichenketteSpeichern (String zeichenkette,
      String dateiname) throws IOException
  {
    FileOutputStream fos = new FileOutputStream (dateiname);
    OutputStreamWriter osw = new OutputStreamWriter (fos);
    BufferedWriter out = new BufferedWriter (osw);
    
    out.write (zeichenkette);
    
    if (out != null)
    {
      out.close ();
    }
  }
}
